#include <iostream>
#include <vector>
using namespace std;
const int N = 5000010;
int flag[N];
vector<int> a;
int cnt;
int k;
bool check(vector<int>& x) {
    int ans = 0;
    for(auto& s : x) {
        ans += s;
    }
    if(ans < 2) return false;
    if(ans == 2) return true;
    if(ans % 2 == 0) return false;
    for(int i = 3; i * i <= ans; i++){
        if(ans % i == 0) return false;
    }
    return true;
}
void dfs(int n ,int pos, vector<int>& t) {
    if(n == k) {
        if(check(t)) {
            cnt++;
        }
        return;
    }
    for(int i = pos; i < a.size(); i++) {
            t.push_back(a[i]);
            dfs(n + 1 ,i + 1, t);
            t.pop_back();
    }
}
int main() {
    int n;
    cin >> n >> k;
    for(int i = 0; i < n; i++) {
        int temp;
        cin >> temp;
        a.push_back(temp);
    }
    vector<int> t;
    dfs(0, 0, t);
    cout << cnt;
    return 0;
}